Autonomous web reconnaissance and vulnerability scanning framework. Passive-first, plugin-based pipeline designed for authorized penetration testing and security assessments.
Español — versión en español al final del documento.
pip install -e .Requires Python 3.9+. External tool dependencies (ffuf, nuclei, masscan, wafw00f) are installed automatically on first use.
Saudit is organized around four progressive presets. Each one extends the previous.
initial → web-basic → web-authenticated → web-advanced
No brute-force. Safe to run as the first step on any authorized target.
saudit -t https://app.example.com -p initialCovers:
- HTTP fingerprinting — technology detection, WAF detection, NTLM endpoint discovery
- SSL/TLS — certificate inspection and subdomain discovery
- JS analysis — static analysis for secrets, endpoints and source maps (
jsfuzzer), vulnerable libraries (retirejs) - API discovery — Swagger/OpenAPI and GraphQL introspection
- Secrets — hardcoded secrets in HTTP headers/cookies (
badsecrets) - Security posture — security headers audit, robots.txt, security.txt
- Source code exposure — exposed
.gitdetection, Git repo download, external repo link discovery, self-hosted GitLab enumeration - Nuclei — technology fingerprinting templates only (
mode: technology) - Stack advisor — detects CMS, framework, server, language and WAF per host; emits a
STACK_PROFILEevent consumed by other modules and targeted advisoryFINDINGevents forai_review
Timing: ~20–40 min on a medium-sized target.
Extends initial with active enumeration.
saudit -t https://app.example.com -p web-basic
# Custom wordlist
saudit -t https://app.example.com -p web-basic \
-c modules.ffuf.wordlist=/opt/wordlists/my-list.txtAdds:
- 403 bypass — common bypass techniques against forbidden resources
- Subdomain takeover — dangling DNS detection (
baddns) - Directory discovery — ffuf with raft-medium (5 000 lines), depth 2, file extensions:
php,asp,aspx,txt,bak,config - File harvesting — downloads exposed PDFs, DOCX, ZIP, SQL dumps, keys, configs and extracts their text content
- API probing — active canary injection on endpoints discovered by swagger/graphql
- Nuclei overridden to
severemode — runs all critical+high severity templates (not just technology-specific)
Timing: +45–90 min on top of
initial. Fullweb-basicrun: 1–1.5 hours on a medium target.
Requires an active session. Extends web-basic with parameter mining and fuzzing.
# Bearer token
saudit -t https://app.example.com -p web-authenticated --bearer <token>
# Cookie
saudit -t https://app.example.com -p web-authenticated -C session=abc123Adds:
- Session validation — verifies the provided credentials are actually authenticated before proceeding
- Parameter mining — GET params, headers and cookie parameter discovery
- Reflected parameters — confirms which parameters reflect in responses
- SQLi on APIs — error-based SQLi probe on discovered API endpoints
- Lightfuzz — parameter fuzzing for SQLi, XSS, SSTI, SSRF, path traversal, CMDi, ESI, crypto
ai_reviewautomatically recommends the appropriate lightfuzz sub-preset based on signals found during the scan.
Timing: +1–2 hours on top of
web-basic.
All modules active. Authorized targets with explicit written approval only.
saudit -t https://app.example.com -p web-advanced -C session=abc123Adds:
- Host header injection
- SSRF probing
- HTTP request smuggling
- URL manipulation bypasses
- Lightfuzz reconfigured: POST enabled, force-fuzz common headers, test each param instance individually, speculate params from JSON/XML responses
Combine with any main preset using multiple -p flags.
web-basic already runs nuclei in severe mode (critical+high). Add a sub-preset when you need broader or more targeted coverage:
# Full template library, directory roots only
saudit -t https://app.example.com -p web-basic -p nuclei
# Budget — ~10 requests per host (recommended when WAF is strict)
saudit -t https://app.example.com -p web-basic -p nuclei-budget
# Technology — only templates matching detected technologies
saudit -t https://app.example.com -p web-basic -p nuclei-technology
# Intense — all URLs, no directory_only restriction
saudit -t https://app.example.com -p web-basic -p nuclei-intense# Aggressive recursive (depth 3, extensions, 5000-line wordlist)
saudit -t https://app.example.com -p web-basic -p ffuf-heavy
# IIS target
saudit -t https://app.example.com -p web-basic -p ffuf-heavy -p iis-shortnames# Full IIS/.NET audit (Telerik, DotNetNuke, AjaxPro, shortnames, bin exposure)
saudit -t https://app.example.com -p web-basic -p dotnet-audit
stack_advisorrecommendsdotnet-auditautomatically when IIS or ASP.NET is detected.
saudit -t https://app.example.com -p web-basic -p lightfuzz-xss # XSS only
saudit -t https://app.example.com -p web-basic -p lightfuzz-light # all vulns, no POST
saudit -t https://app.example.com -p web-basic -p lightfuzz-medium # + paramminer + badsecrets + hunt
saudit -t https://app.example.com -p web-basic -p lightfuzz-heavy # POST enabled
saudit -t https://app.example.com -p web-basic -p lightfuzz-superheavy # maximum coverage| Sub-preset | Description |
|---|---|
osint |
Full passive OSINT: crt.sh, SecurityTrails, VirusTotal, subfinder, GitHub, cloud buckets, Google Dorks, Wayback |
nuclei |
Full Nuclei template library, directory roots only |
nuclei-budget |
Nuclei budget mode (~10 req/host) |
nuclei-technology |
Nuclei templates matching detected technologies only |
nuclei-intense |
Nuclei against ALL discovered URLs |
portscan |
TCP port scan + service fingerprinting (requires root) |
dirbust-light |
Surface-level directory brute-force |
ffuf-heavy |
Recursive directory brute-force (depth 3, extensions, 5000-line wordlist) |
iis-shortnames |
IIS 8.3 shortname enumeration |
dotnet-audit |
Full IIS/.NET audit: Telerik, DotNetNuke, AjaxPro, bin exposure |
paramminer |
Parameter discovery only — GET params, headers, cookies |
lightfuzz-xss |
Parameter fuzzing limited to XSS via GET |
lightfuzz-light |
All vuln classes, no POST, minimal modules |
lightfuzz-medium |
All vuln classes, no POST, adds paramminer + badsecrets + hunt |
lightfuzz-heavy |
POST enabled, paramminer included |
lightfuzz-superheavy |
Maximum — force headers, individual instances, speculate params |
Unknown target, start here:
saudit -t https://app.example.com -p initialFull passive OSINT:
SECURITYTRAILS_API_KEY=xxx VIRUSTOTAL_API_KEY=yyy \
saudit -t https://app.example.com -p osintStandard unauthenticated audit:
saudit -t https://app.example.com -p web-basicAuthenticated audit:
saudit -t https://app.example.com -p web-authenticated --bearer <token>IIS / .NET target:
saudit -t https://app.example.com -p web-basic -p dotnet-auditWordPress target:
saudit -t https://app.example.com -p web-basic -p nuclei-technology -m wpscanWAF present — stay quiet:
saudit -t https://app.example.com -p web-basic -p nuclei-budgetFull progressive flow (typical engagement):
# Step 1 — passive recon
saudit -t https://app.example.com -p initial
# Step 2 — active unauthenticated audit
saudit -t https://app.example.com -p web-basic
# Step 3 — authenticated audit with obtained credentials
saudit -t https://app.example.com -p web-authenticated --bearer <token>Re-run from previous scan (skip re-discovery):
saudit -t https://app.example.com -p web-authenticated \
-m from_report -c modules.from_report.report_file=scan.json --bearer <token>Full aggressive (approved):
saudit -t https://app.example.com -p web-advanced -p nuclei-intense --bearer <token>Every FINDING and VULNERABILITY event is automatically triaged as the scan runs. An LLM classifies each finding as validated or false_positive before it reaches the final report — eliminating noise without manual review.
Trigger rules:
- Severity
criticalorhigh→ always triaged - Severity
mediumon high-FP modules → triaged:github_recon,jsfuzzer,hunt,google_dorks,cloud_buckets,bypass403,baddns,retirejs
Result:
ai-false-positivetag → finding is silently dropped fromai_reviewand the reportai-validatedtag → finding proceeds with anai_summaryfield added to its data
Backend: NVIDIA NIM → Gemini (fallback). Runs fire-and-forget; never blocks the scan.
Confidence threshold: findings with confidence < 0.5 are treated as false positives regardless of status.
Saudit includes a local retrieval-augmented knowledge base built from public pentest sources. When ai_review detects application technologies in HTTP responses (CMS, frameworks, languages), it automatically queries the index and injects matching payloads into the LLM prompt — eliminating hallucinated attack vectors.
Sources:
- PayloadsAllTheThings — payloads and bypass techniques per vulnerability class
- Nuclei templates — HTTP + SSL templates
One-time setup:
# 1) Install vector store
pip install chromadb
# 2) Pull embedding model (~274 MB, local only)
ollama pull nomic-embed-text
# 3) Build the index
python -m saudit.rag.indexIndex stored at ~/.saudit/rag/chroma/. Override with SAUDIT_RAG_DB env var.
Refresh:
python -m saudit.rag.index # all sources, incremental
python -m saudit.rag.index -s payloadsallthethings # single source
python -m saudit.rag.index --rebuild # wipe and re-embed
python -m saudit.rag.index --list # show configured sourcesQuery standalone:
python -m saudit.rag.query "Laravel SQL injection bypass"
python -m saudit.rag.query "graphql introspection" -s nuclei-templates -k 5The RAG is optional. If
chromadbis not installed or the index has not been built,ai_reviewruns normally without the payload context block.
Performance note: Embedding requires GPU for acceptable speed. On CPU, use a lighter model:
SAUDIT_RAG_EMBED_MODEL=all-minilm python -m saudit.rag.index
ai_review runs after the scan and produces a prioritized attack plan. It uses real target URLs, detected technologies, WAF context, and — when available — grounded payloads from the RAG index.
Backend priority:
- Ollama (local, free — preferred)
- Gemini (Google API)
- NVIDIA NIM (cloud, free tier — 1 000 req/month)
- Claude (Anthropic API)
- Skip (warn and exit cleanly if no backend available)
Setup:
# Ollama (recommended)
ollama pull qwen2.5-coder:7b
# Cloud backends — set any one or more
export GEMINI_API_KEY=...
export NVIDIA_API_KEY=...
export ANTHROPIC_API_KEY=...What it produces:
- Prioritized attack plan with exact bash commands using real discovered URLs
- WAF-aware payloads with specific evasion techniques per vendor (Cloudflare, ModSecurity, Akamai, AWS WAF, F5, Imperva)
- Source-map JS code review with targeted grep/curl commands
- Hardcoded secrets and exposed sensitive files highlighted as critical
- Grounded payload hints per detected technology (from RAG index, when available)
- Next steps — specialized modules and manual actions with exact
sauditcommands
Override model or skip map review:
saudit -t https://app.example.com -p initial \
-c modules.ai_review.ollama_model=llama3.1:8b \
-c modules.ai_review.analyze_maps=falseTarget:
-t TARGET Target URL, domain, or IP
-w WHITELIST In-scope whitelist (defaults to target)
-b BLACKLIST Exclude these hosts/paths
--strict-scope Disable subdomain expansion
--bearer TOKEN Authorization: Bearer <TOKEN> on every request
-C cookie=value Custom cookies
Presets:
-p PRESET [PRESET ..] One or more presets (main + optional sub-presets)
-c key=value Override config options
-lp List all available presets
Modules:
-m MODULE [MODULE ..] Enable specific modules
-f FLAG [FLAG ..] Enable modules by flag (e.g. -f passive)
-ef FLAG Exclude modules with this flag
-em MODULE Exclude a specific module
-l List all scan modules
-lo List all output modules
-lf List all flags
-mh MODULE Show all config options for a module
Scan:
-n SCAN_NAME Name the scan
-y Skip confirmation prompt
-s Silent mode
-v / -d Verbose / debug output
--dry-run Validate config without running
--current-preset Print the active preset YAML and exit
Output:
-o DIR Output directory (default: ./<scan_name>/)
-om MODULE [MODULE ..] Output modules
-j / --json JSON output to stdout
HTTP:
--proxy URL HTTP/HTTPS proxy
-H header=value Custom request headers
-ua USER_AGENT Override User-Agent
--custom-yara-rules Additional YARA rules for secret detection
| Module | Preset | Description |
|---|---|---|
httpx |
initial | HTTP crawler — required by most modules |
robots |
initial | Parse robots.txt |
securitytxt |
initial | Parse security.txt |
ntlm |
initial | NTLM endpoint detection (exposes AD domain info) |
wafw00f |
initial | WAF detection |
sslcert |
initial | SSL/TLS certificate inspection + subdomain discovery |
oauth |
initial | OAuth/OIDC endpoint discovery |
azure_realm |
initial | Azure tenant discovery |
badsecrets |
initial | Detect known/weak secrets in web frameworks |
jsfuzzer |
initial | JS static analysis — secrets, endpoints, source maps |
retirejs |
initial | Detect vulnerable JavaScript libraries |
git |
initial | Exposed .git directory detection |
code_repository |
initial | Detect links to external repos (GitHub, GitLab, Docker Hub) |
gitdumper |
initial | Download and reconstruct exposed Git repositories |
gitlab_onprem |
initial | Self-hosted GitLab detection and repo enumeration |
swagger_probe |
initial | OpenAPI/Swagger endpoint discovery |
graphql_introspection |
initial | GraphQL introspection |
hunt |
initial | Flag parameters commonly linked to injection vulns |
security_headers |
initial | HTTP security headers audit |
nuclei |
initial (tech) / web-basic (severe) | Nuclei template scanner |
stack_advisor |
initial | Detect full web stack (CMS, framework, server, WAF) and emit targeted recommendations |
bypass403 |
web-basic | 403 bypass techniques |
baddns |
web-basic | Subdomain takeover detection |
ffuf |
web-basic | Web directory/file brute-force |
filedownload |
web-basic | Download PDFs, DOCX, ZIP, SQL dumps, keys, configs |
extractous |
web-basic | Extract text from downloaded files |
api_probe |
web-basic | Active injection probe on discovered API endpoints |
session_check |
web-authenticated | Validate session before proceeding |
paramminer_getparams |
web-authenticated | GET parameter mining |
paramminer_headers |
web-authenticated | HTTP header parameter mining |
paramminer_cookies |
web-authenticated | Cookie parameter mining |
reflected_parameters |
web-authenticated | Reflected parameter detection |
api_sqli_probe |
web-authenticated | Error-based SQLi on API endpoints |
lightfuzz |
web-authenticated | Parameter fuzzer (SQLi, XSS, SSTI, SSRF, path, CMDi, ESI) |
host_header |
web-advanced | Host header injection |
generic_ssrf |
web-advanced | SSRF probing |
smuggler |
web-advanced | HTTP request smuggling |
url_manipulation |
web-advanced | URL normalization bypass |
osint_enum |
osint | Subdomain discovery via crt.sh + Shodan |
securitytrails |
osint | Historical DNS data (API key required) |
virustotal |
osint | Passive DNS subdomain discovery |
subfinder |
osint | Passive subdomain discovery (40+ sources) |
github_recon |
osint | GitHub leak search + public repo enumeration |
cloud_buckets |
osint | AWS S3, Azure Blob, GCP bucket enumeration |
google_dorks |
osint | Generate + execute Google Dorks |
wayback |
osint | Historical URL discovery via archive.org |
portscan |
portscan | TCP port scan (requires root) |
fingerprintx |
portscan | Service fingerprinting on open ports |
iis_shortnames |
sub-preset | IIS 8.3 shortname enumeration |
ajaxpro |
sub-preset | AjaxPro RCE detection |
aspnet_bin_exposure |
sub-preset | ASP.NET bin exposure |
dotnetnuke |
sub-preset | DotNetNuke vulnerability scan |
telerik |
sub-preset | Telerik UI vulnerability scan |
wpscan |
standalone | WordPress vulnerability scan |
mendix_recon |
standalone | Mendix access-control testing |
from_report |
standalone | Re-seed scan from a previous JSON output |
| Module | Description |
|---|---|
html_report |
Self-contained HTML report (default in all presets) |
ai_review |
AI-powered attack plan — WAF-aware commands, RAG payloads, lightfuzz recommendations |
json |
NDJSON file (output.json, default in all presets) |
stdout |
Plain-text terminal output |
| Path | Default | Description |
|---|---|---|
web.spider_distance |
3 | Max link hops from seed URL |
web.spider_depth |
5 | Max directory depth |
web.spider_links_per_page |
30 | Max links followed per page |
modules.ffuf.wordlist |
raft-medium-directories | ffuf wordlist URL or path |
modules.ffuf.lines |
5000 | Max lines to read from wordlist |
modules.ffuf.max_depth |
2 | Directory recursion depth |
modules.ffuf.extensions |
php,asp,aspx,txt,bak,config | File extensions to probe |
modules.ffuf.rate |
50 | ffuf requests per second |
modules.nuclei.mode |
technology (initial) / severe (web-basic) | Nuclei run mode |
modules.nuclei.tags |
"" (all) |
Nuclei template tags filter |
modules.gitlab_onprem.api_key |
"" |
GitLab API token |
modules.securitytrails.api_key |
"" |
SecurityTrails API key |
modules.virustotal.api_key |
"" |
VirusTotal API key |
dns.threads |
25 | DNS resolver threads |
scope.strict |
false | Disable subdomain expansion |
pip install -e .
pre-commit install
ruff check saudit/
ruff format saudit/
pytest --exitfirst --disable-warnings --log-cli-level=ERROR saudit/
pytest -k test_preset_module_resolution saudit/Framework autónomo de reconocimiento web y escaneo de vulnerabilidades. Pipeline pasivo-primero, basado en plugins, diseñado para pruebas de penetración y auditorías de seguridad autorizadas.
pip install -e .Requiere Python 3.9+. Las dependencias externas (ffuf, nuclei, masscan, wafw00f) se instalan automáticamente en el primer uso.
Saudit se organiza en cuatro presets progresivos. Cada uno extiende al anterior.
initial → web-basic → web-authenticated → web-advanced
Sin fuerza bruta. Seguro como primer paso en cualquier objetivo autorizado.
saudit -t https://app.example.com -p initialCubre:
- Fingerprinting HTTP — detección de tecnología, WAF, endpoints NTLM
- SSL/TLS — inspección de certificados y descubrimiento de subdominios
- Análisis JS — análisis estático de secretos, endpoints y source maps (
jsfuzzer), librerías vulnerables (retirejs) - Descubrimiento de APIs — Swagger/OpenAPI e introspección GraphQL
- Secretos — secretos hardcodeados en headers/cookies HTTP (
badsecrets) - Postura de seguridad — auditoría de security headers, robots.txt, security.txt
- Exposición de código fuente — detección de
.gitexpuesto, descarga de repos Git, detección de GitLab on-premise - Nuclei — solo templates de fingerprinting de tecnología (
mode: technology) - Stack advisor — detecta CMS, framework, servidor, lenguaje y WAF por host; emite evento
STACK_PROFILEconsumido por otros módulos yFINDINGde advisory paraai_review
Duración: ~20–40 min en un objetivo de tamaño medio.
Extiende initial con enumeración activa.
saudit -t https://app.example.com -p web-basic
# Wordlist personalizada
saudit -t https://app.example.com -p web-basic \
-c modules.ffuf.wordlist=/opt/wordlists/mi-lista.txtAñade:
- 403 bypass — técnicas de bypass contra recursos restringidos
- Subdomain takeover — detección de DNS colgante (
baddns) - Directory discovery — ffuf con raft-medium (5 000 líneas), depth 2, extensiones:
php,asp,aspx,txt,bak,config - File harvesting — descarga PDFs, DOCX, ZIP, SQL dumps, claves, configs y extrae su contenido
- API probing — inyección de canarios en endpoints descubiertos por swagger/graphql
- Nuclei sobrescrito a modo
severe— ejecuta todos los templates de severidad critical+high
Duración: +45–90 min sobre
initial.web-basiccompleto: 1–1.5 horas en un objetivo medio.
Requiere sesión activa. Extiende web-basic con minería de parámetros y fuzzing.
saudit -t https://app.example.com -p web-authenticated --bearer <token>
saudit -t https://app.example.com -p web-authenticated -C session=abc123Añade:
- Validación de sesión — verifica que las credenciales están autenticadas antes de continuar
- Minería de parámetros — descubrimiento de params GET, headers y cookies
- Parámetros reflejados — confirma qué parámetros se reflejan en respuestas
- SQLi en APIs — sonda SQLi basada en errores sobre endpoints API descubiertos
- Lightfuzz — fuzzing de parámetros para SQLi, XSS, SSTI, SSRF, path traversal, CMDi, ESI, crypto
Duración: +1–2 horas sobre
web-basic.
Solo para objetivos autorizados con aprobación escrita explícita.
saudit -t https://app.example.com -p web-advanced -C session=abc123Añade: inyección de Host header, sondeo SSRF, HTTP request smuggling, bypasses de URL. Lightfuzz reconfigurado con POST habilitado, headers forzados y especulación de parámetros.
web-basic ya corre nuclei en modo severe. Añade un sub-preset cuando necesites más cobertura:
saudit -t https://app.example.com -p web-basic -p nuclei # librería completa
saudit -t https://app.example.com -p web-basic -p nuclei-budget # ~10 req/host (con WAF)
saudit -t https://app.example.com -p web-basic -p nuclei-technology # solo techs detectadassaudit -t https://app.example.com -p web-basic -p dotnet-auditsaudit -t https://app.example.com -p web-basic -p lightfuzz-light # sin POST
saudit -t https://app.example.com -p web-basic -p lightfuzz-medium # + paramminer
saudit -t https://app.example.com -p web-basic -p lightfuzz-heavy # POST habilitado
saudit -t https://app.example.com -p web-basic -p lightfuzz-superheavy # cobertura máxima| Sub-preset | Descripción |
|---|---|
osint |
OSINT pasivo completo: crt.sh, SecurityTrails, VirusTotal, subfinder, GitHub, cloud buckets, Google Dorks, Wayback |
nuclei |
Librería completa de templates Nuclei |
nuclei-budget |
Modo budget (~10 req/host) |
nuclei-technology |
Solo templates de tecnologías detectadas |
nuclei-intense |
Nuclei contra todas las URLs descubiertas |
portscan |
Escaneo TCP + fingerprinting de servicios (requiere root) |
ffuf-heavy |
Brute-force recursivo (depth 3, extensiones, 5000 líneas) |
dotnet-audit |
Auditoría completa IIS/.NET |
lightfuzz-light |
Todas las clases de vuln, sin POST |
lightfuzz-medium |
+ paramminer + badsecrets + hunt |
lightfuzz-heavy |
POST habilitado, paramminer incluido |
lightfuzz-superheavy |
Cobertura máxima |
# Objetivo desconocido
saudit -t https://app.example.com -p initial
# OSINT pasivo completo
SECURITYTRAILS_API_KEY=xxx saudit -t https://app.example.com -p osint
# Auditoría estándar sin credenciales
saudit -t https://app.example.com -p web-basic
# Auditoría autenticada
saudit -t https://app.example.com -p web-authenticated --bearer <token>
# Flujo completo de engagement
saudit -t https://app.example.com -p initial
saudit -t https://app.example.com -p web-basic
saudit -t https://app.example.com -p web-authenticated --bearer <token>
# Objetivo IIS/.NET
saudit -t https://app.example.com -p web-basic -p dotnet-audit
# WAF presente — modo silencioso
saudit -t https://app.example.com -p web-basic -p nuclei-budget
# Repetir desde escaneo anterior (sin re-descubrimiento)
saudit -t https://app.example.com -p web-authenticated \
-m from_report -c modules.from_report.report_file=scan.json --bearer <token>Cada evento FINDING y VULNERABILITY se triagea automáticamente mientras el escaneo corre. Un LLM clasifica cada hallazgo como validated o false_positive antes de que llegue al informe final.
Reglas de activación:
- Severidad
criticalohigh→ siempre se triagea - Severidad
mediumen módulos con alto FP →github_recon,jsfuzzer,hunt,google_dorks,cloud_buckets,bypass403,baddns,retirejs
Resultado:
- Tag
ai-false-positive→ descartado silenciosamente del informe - Tag
ai-validated→ continúa con campoai_summaryañadido
Backend: NVIDIA NIM → Gemini (fallback). Fire-and-forget; nunca bloquea el escaneo.
Base de conocimiento local de recuperación aumentada. Cuando ai_review detecta tecnologías de aplicación en respuestas HTTP (CMS, frameworks, lenguajes), consulta el índice e inyecta payloads reales en el prompt del LLM — eliminando vectores de ataque inventados.
Fuentes: PayloadsAllTheThings · Nuclei templates HTTP+SSL
Setup único:
pip install chromadb
ollama pull nomic-embed-text
python -m saudit.rag.indexActualizar:
python -m saudit.rag.index # incremental
python -m saudit.rag.index --rebuild # borrar y re-embeddear
python -m saudit.rag.index -s payloadsallthethings # una fuenteEl RAG es opcional. Si no está disponible,
ai_reviewfunciona normalmente sin el bloque de payloads.
Nota de rendimiento: El embedding requiere GPU para velocidad aceptable. En CPU usa:
SAUDIT_RAG_EMBED_MODEL=all-minilm python -m saudit.rag.index
Corre después del escaneo y produce un plan de ataque priorizado con comandos exactos, payloads con evasión de WAF por vendor, revisión de código JS con source maps y — cuando el RAG está disponible — hints de payloads específicos por tecnología detectada.
Prioridad de backends:
- Ollama (local, gratuito — preferido)
- Gemini (API de Google)
- NVIDIA NIM (cloud, tier gratuito — 1 000 req/mes)
- Claude (API de Anthropic)
- Skip (aviso y salida limpia)
ollama pull qwen2.5-coder:7b # backend local recomendado
export GEMINI_API_KEY=... # o cualquier backend cloud
export NVIDIA_API_KEY=...
export ANTHROPIC_API_KEY=...| Módulo | Preset | Descripción |
|---|---|---|
httpx |
initial | Crawler HTTP — base para la mayoría de módulos |
robots |
initial | Parsear robots.txt |
securitytxt |
initial | Parsear security.txt |
ntlm |
initial | Detección de endpoints NTLM |
wafw00f |
initial | Detección de WAF |
sslcert |
initial | Certificados SSL/TLS + descubrimiento de subdominios |
oauth |
initial | Descubrimiento de endpoints OAuth/OIDC |
azure_realm |
initial | Descubrimiento de tenant Azure |
badsecrets |
initial | Secretos débiles/conocidos en frameworks web |
jsfuzzer |
initial | Análisis estático JS — secretos, endpoints, source maps |
retirejs |
initial | Librerías JavaScript vulnerables |
git |
initial | Detección de .git expuesto |
code_repository |
initial | Links a repos externos |
gitdumper |
initial | Descarga y reconstrucción de repos Git expuestos |
gitlab_onprem |
initial | GitLab on-premise — detección y enumeración de repos |
swagger_probe |
initial | Descubrimiento de endpoints OpenAPI/Swagger |
graphql_introspection |
initial | Introspección GraphQL |
hunt |
initial | Parámetros ligados a vulns de inyección |
security_headers |
initial | Auditoría de security headers HTTP |
nuclei |
initial (tech) / web-basic (severe) | Scanner de templates Nuclei |
stack_advisor |
initial | Stack completo (CMS, framework, servidor, WAF) + recomendaciones dirigidas |
bypass403 |
web-basic | Técnicas de bypass de 403 |
baddns |
web-basic | Detección de subdomain takeover |
ffuf |
web-basic | Brute-force de directorios/archivos web |
filedownload |
web-basic | Descarga de archivos expuestos |
extractous |
web-basic | Extracción de texto de archivos descargados |
api_probe |
web-basic | Sonda activa en endpoints API descubiertos |
session_check |
web-authenticated | Validación de sesión |
paramminer_getparams |
web-authenticated | Minería de parámetros GET |
paramminer_headers |
web-authenticated | Minería de parámetros de headers |
paramminer_cookies |
web-authenticated | Minería de parámetros de cookies |
reflected_parameters |
web-authenticated | Detección de parámetros reflejados |
api_sqli_probe |
web-authenticated | SQLi en endpoints API |
lightfuzz |
web-authenticated | Fuzzer de parámetros (SQLi, XSS, SSTI, SSRF, path, CMDi, ESI) |
host_header |
web-advanced | Inyección de Host header |
generic_ssrf |
web-advanced | Sondeo SSRF |
smuggler |
web-advanced | HTTP request smuggling |
url_manipulation |
web-advanced | Bypass por normalización de URL |
osint_enum |
osint | Subdominios vía crt.sh + Shodan |
securitytrails |
osint | DNS histórico (requiere API key) |
virustotal |
osint | DNS pasivo vía VirusTotal |
subfinder |
osint | Subdominios pasivos (40+ fuentes) |
github_recon |
osint | Búsqueda de leaks en GitHub |
cloud_buckets |
osint | Buckets AWS S3, Azure Blob, GCP |
google_dorks |
osint | Generar + ejecutar Google Dorks |
wayback |
osint | URLs históricas vía archive.org |
portscan |
portscan | Escaneo TCP (requiere root) |
fingerprintx |
portscan | Fingerprinting de servicios en puertos abiertos |
wpscan |
standalone | Vulnerabilidades WordPress |
mendix_recon |
standalone | Control de acceso Mendix |
from_report |
standalone | Re-seed desde JSON de escaneo anterior |
| Clave | Valor por defecto | Descripción |
|---|---|---|
web.spider_distance |
3 | Máximo de saltos desde la URL semilla |
web.spider_depth |
5 | Profundidad máxima de directorio |
web.spider_links_per_page |
30 | Máximo de links por página |
modules.ffuf.wordlist |
raft-medium-directories | URL o ruta de wordlist |
modules.ffuf.lines |
5000 | Máximo de líneas de la wordlist |
modules.ffuf.max_depth |
2 | Profundidad de recursión |
modules.ffuf.extensions |
php,asp,aspx,txt,bak,config | Extensiones a probar |
modules.ffuf.rate |
50 | Peticiones por segundo |
modules.nuclei.mode |
technology (initial) / severe (web-basic) | Modo de ejecución |
modules.nuclei.tags |
"" (todos) |
Filtro de tags de templates |
modules.gitlab_onprem.api_key |
"" |
Token API de GitLab |
modules.securitytrails.api_key |
"" |
API key de SecurityTrails |
modules.virustotal.api_key |
"" |
API key de VirusTotal |
dns.threads |
25 | Threads del resolver DNS |
scope.strict |
false | Desactivar expansión de subdominios |